#ifndef __NavigationLibrary_H__
#define __NavigationLibrary_H__
#include "Navigation.h"

#define  TCELOGGER_DLL_EXPORTS
#ifdef TCELOGGER_DLL_EXPORTS
#define _DLLExport __declspec(dllexport)
#else
#define _DLLExport 
#endif
#if defined(__cplusplus)
 extern "C" {
#endif // 

	 Navigation* navigation = nullptr;
	 _DLLExport  bool  DtStatusSucceed(dtStatus status);
	 _DLLExport  void CreateNavigation();
	 _DLLExport  void ReleaseNavigation();
	 _DLLExport  void LoadTile( char* path);
	 _DLLExport  bool LoadTileFromBuffer( unsigned char* data, size_t size);

	 bool LoadTempObstacleTile(const char* path);
	 bool LoadTempObstacleTileFromBuffer(unsigned char* data, size_t size);

	 _DLLExport  dtStatus FindRandomPointAroundCircle(NavPoint centerPos,  float radius, NavPoint* outPos);
	 _DLLExport  dtStatus FindNearestPoly( float* startPos, NavPoint* navPoint,  float *polyPickExt = nullptr);
	 _DLLExport  dtStatus FindNearestPolyNoPickExt(float* startPos, NavPoint* navPoint);
	 _DLLExport  dtStatus FindPathStraight( float* startPos,  float* endPos, float *out_list, int* count);
	 _DLLExport  dtStatus FindRaycast( float* startPos,  float* endPos, float* out_hitPos, float* out_tangent);

	 _DLLExport  dtStatus AddBoxObstacle(const float* bmin, const float* bmax, dtObstacleRef* result);
	 _DLLExport	 dtStatus AddBoxObstacleBox(const float* center, const float* halfExtents, const float yRadians, dtObstacleRef* result);
	 // Cylinder obstacle.
	 _DLLExport	 dtStatus AddObstacle(const float* pos, const float radius, const float height, dtObstacleRef* result);
	 _DLLExport	 dtStatus RemoveObstacle(const dtObstacleRef ref);

#if defined(__cplusplus)
 }
#endif // 

#endif // !Navigation+H
